package org.hjl.commonutils.string;

import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * @author hjl
 * @version 1.0
 * @since 2024-08-05 15:01
 */
public class StringUtil {

    private static final String EMPTY = "";

    /**
     * 两个字符串是否绝对相等
     *
     * @param str1 1
     * @param str2 2
     * @return 比较结果
     */
    public static boolean isEquals(String str1, String str2) {
        return Objects.equals(str1, str2);
    }

    /**
     * 两个字符串是否绝对不相等
     *
     * @param str1 1
     * @param str2 2
     * @return 比较结果
     */
    public static boolean isNotEquals(String str1, String str2) {
        return !isEquals(str1, str2);
    }

    public static boolean isEmpty(String str) {
        return str == null || str.trim().isEmpty();
    }

    public static boolean isNotEmpty(String str) {
        return !isEmpty(str);
    }

    /**
     * 为空或为空字符串
     *
     * @param str 源字符串
     * @return 判断结果
     */
    public static boolean isBlank(String str) {
        return str == null || EMPTY.equals(str.trim());
    }

    /**
     * 不为空并且不为空字符串
     *
     * @param str 源字符串
     * @return 判断结果
     */
    public static boolean isNotBlank(String str) {
        return !isBlank(str);
    }

    /**
     * 根据指定字符分割字符串
     *
     * @param str       源字符串
     * @param separator 分割字符
     * @return 分割后的字符串数组
     */
    public static String[] splitArray(String str, String separator) {
        return str.split(separator);
    }

    /**
     * 根据指定字符分割字符串
     *
     * @param str       源字符串
     * @param separator 分割字符
     * @return 分割后的字符串列表
     */
    public static List<String> splitList(String str, String separator) {
        return Arrays.stream(splitArray(str, separator)).collect(Collectors.toList());
    }

}
